SUPPORTED_SCENARIOS = {
    "text_summarization": "Write a summary for a piece of text.",
    "writing_blog_post": "Write a blog post on the website.",
    "writing_cooking_recipe": "Write a cooking recipe that teaches people how to prepare a meal.",
    "creative_writing": "Conduct a creative writing task, like writing stories, poems, dramas, novels, screenplays, etc.",
    "writing_job_application": "Write a job application for your job search.",
    "writing_legal_document": "Write a legal document involving one or multiple parties that can be relied upon in court.",
    "writing_marketing_materials": "Write marketing materials that help you communicate your brand's products or services to your target market.",
    "writing_news_article": "Write a news article for the newspaper.",
    "writing_personal_essay": "Write an essay that explores topics through personal experiences, insights or understanding.",
    "writing_presentation_script": "Write a speech/presentation script for a public speech.",
    "writing_product_description": "Write a product description that describes and explains your product or service.",
    "ranking": "Sort some things, according to some criteria.",
    "writing_scientific_paper": "Write a scientific paper that shares your own original research work with other scientists.",
    "writing_social_media_post": "Write a post that will be posted on social media such as Twitter, Instagram, Facebook or LinkedIn.",
    "writing_song_lyrics": "Write song lyrics.",
    "writing_technical_document": "Write a technical document that describes the function and structure of a technical product (or concept) or a product that is being developed or has been put into use.",
    "text_simplification": "Reduce the complexity of the vocabulary and sentence structure of text while retaining its original meaning, with the goal of improving readability and understanding.",
    "topic_modeling": "Extract the high-level topics or themes from a given text, i.e., what kind of topics are discussed in the text.",
    "chitchat": "Chitchat with the user.",
    "solving_exam_question_without_math": "Solve an exam question (like fill-in-the-blank, multiple choice, true/false, matching, ordering, problem soving, etc) with no math involved.",
    "solving_exam_question_with_math": "Solve an exam question (like fill-in-the-blank, multiple choice, true/false, matching, ordering, problem soving, etc) with math involved.",
    "writing_advertisement": "Write an advertisement for a product or service.",
    "seeking_advice": "Respond well to users when they seek advice.",
    "classification_identification": "Classify or identify one or multiple objects given by the user into specific categories.",
    "code_to_code_translation": "Convert the given code into another programming language.",
    "code_correction_rewriting": "Correct the potential errors in a piece of code or rewrite the code by user's requirements.",
    "code_generation": "Write a piece of code based on the given description.",
    "code_simplification": "Rewrite a piece of code to make it more concise and easy to understand.",
    "counterfactual": "Answer questions or write texts under counterfactual premises.",
    "writing_email": "Write an email.",
    "explaining_code": "Write an explanation for a piece of code.",
    "explaining_general": "Explain something the user wants to know.",
    "analyzing_general": "Analyze a certain thing (like a topic, issue, material, text etc.) given by the user.",
    "verifying_fact": "Verify if the given fact is true or false.",
    "writing_biography": "Write a biography for a person.",
    "functional_writing": "Conduct a functional writing task, like proposals, reports, memos, emails, letters, resumes, polls, questionnaires, surveys, schedules, instructions, manuals, recipes, reviews, etc.",
    "asking_how_to_question": "Give relevant and complete instructions when users ask `how to do` something.",
    "information_extraction": "Extract one or multiple user-specified categories of information from a piece of text attached in the user's query.",
    "instructional_rewriting": "Rewrite a given text with a specific instruction.",
    "keywords_extraction": "Extract the keywords from a piece of text.",
    "language_polishing": "Polish a piece of text to make it more fluent, natural, and readable.",
    "math_reasoning": "Write an answer with the step-by-step reasoning process for a math question.",
    "note_summarization": "Write a note to summarize a piece of text.",
    "open_question": "The user's query is an open domain question with no attached passage or article. You should choose this if the query is a question and none of the other scenarios match it well.",
    "paraphrasing": "Paraphrasing a given text.",
    "peer_review": "Review an academic paper (usually STEM) and write a peer review report.",
    "planning": "Write a plan for an event or activity.",
    "question_generation": "Generate one or multiple questions based on the given topic or attached text.",
    "reading_comprehension": "Answer the questions that can be directly answered by the attached passage.",
    "recommendation": "Give recommendations to users.",
    "rejecting": "Reject to respond when the query is beyond capacity or it violates general ethical and legal rules.",
    "roleplay": "Pretend to be a specific person, character, profession or identity, and complete the required task on this basis.",
    "text_to_text_translation": "Translate the given text into another language.",
    "text_correction": "Correct the potential errors in a piece of text.",
    "title_generation": "Generate a title for the given text or based on a description of the work.",
    "value_judgement": "Provide a value judgment on a given topic or statement.",
    "data_analysis": "Analyze certain data given by the user.",
    "brainstorming": "Brainstorm ideas or items for a given topic.",
    "post_summarization": "Write a summary for a reddit post.",
    "others": "Respond to the user's query.",
}

scenario_group = {
    "Summarization": ["post_summarization", "text_summarization", "note_summarization"],
    "Exam Questions": ["math_reasoning", "solving_exam_question_with_math", "solving_exam_question_without_math", ],
    "Code": ["code_simplification",
             "code_generation",
             "explaining_code",
             "code_correction_rewriting",
             "code_to_code_translation",
             ],
    "Rewriting": [
        "text_simplification",
        "language_polishing",
        "instructional_rewriting",
        "text_correction",
        "paraphrasing",
    ],
    "Creative Writing": ["writing_song_lyrics",
                         "writing_social_media_post", "writing_blog_post", "writing_personal_essay",
                         "creative_writing", "writing_advertisement", "writing_marketing_materials",
                         "writing_presentation_script",
                         "counterfactual", ],
    "Functional Writing": [
        "writing_product_description",
        "writing_job_application",
        "writing_news_article",
        "writing_biography",
        "writing_email",
        "writing_legal_document",
        "writing_technical_document",
        "writing_scientific_paper",
        "functional_writing",
        "writing_cooking_recipe",
    ],
    "General Communication": ["asking_how_to_question", "open_question", "analyzing_general", "explaining_general",
                              "seeking_advice", "recommendation", "value_judgement", "verifying_fact", "chitchat",
                              "roleplay",
                              "planning", "brainstorming",
                              ],
    "NLP Tasks": [
        "ranking",
        "text_to_text_translation",
        "data_analysis",
        "classification_identification",
        "title_generation",
        "question_generation",
        "reading_comprehension",
        "keywords_extraction",
        "information_extraction",
        "topic_modeling",
        "others",
    ],
}

reversed_scenario_group = {
    vv: k for k, v in scenario_group.items() for vv in v
}

DESCRIPTION_TO_SCENARIO = {
    v: k for k, v in SUPPORTED_SCENARIOS.items()
}
